package demo02;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/*
 *  java.util.Set接口 extends Collection接口
 *  Set接口的特点：
 *      1. 不允许存储重复的元素
 *      2. 没有索引，没有带索引的方法，也不能使用普通的for循环遍历
 *  
 *  java.util.HashSet集合 implements Set接口
 *  HashSet集合的特点：
 *      1. 不允许存储重复的元素（Set接口特点）
 *      2. 没有索引，没有带索引的方法，也不能使用普通的for循环遍历（Set接口特点）
 *      3. 是一个无序的集合，存储元素和取出元素的顺序有可能不一致
 *      4. 其底层是一个哈希表结构（查询速度非常快）
 */
public class Demo01Set {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>(); // 创建一个Set集合对象，使用多态
        set.add(1); // 使用add方法往集合中添加元素
        set.add(3);
        set.add(2);
        set.add(1);

        // 使用迭代器遍历set集合
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next()); // 1 2 3，顺序与存入时的顺序不同，且重复元素未被存入
        }
        System.out.println("==============");

        // 使用增强for遍历set集合
        for (int i : set) {
            System.out.println(i); // 1 2 3
        }
    }
}
